package com.drug.mingkang.permission.service;

import com.drug.mingkang.permission.model.PerModule;
import com.drug.mingkang.utils.ResponseMessage;

import java.util.List;
import java.util.Map;

/**
 * 模块表(PerModule)表服务接口
 *
 * @author wenchangjian
 * @since 2020-08-11 12:00:14
 */
public interface PerModuleService {

    /**
     * 通过ID查询单条数据
     *
     * @param moduleId 主键
     * @return 实例对象
     */
    PerModule queryById(String moduleId);

    /**
     * 查询多条数据
     *
     *
     * @param page 页数
     * @param limit 查询条数
     * @param moduleName 模块名称
     * @param type  按钮类型
     * @return 对象列表
     */
    Map<String, Object> queryAllByLimit(Integer page, Integer limit, String moduleName,String type);

    /**
     * 新增数据
     *
     * @param perModule 实例对象
     * @return 实例对象
     */
    PerModule insert(PerModule perModule);

    /**
     * 修改数据
     *
     * @param perModule 实例对象
     * @return 实例对象
     */
    PerModule update(PerModule perModule);


    /**
     * 增加 编辑数据
     * @param perModule 实例对象
     * @return
     */
    ResponseMessage insertAndEdit(PerModule perModule);

    /**
     * 通过主键删除数据
     *
     * @param moduleId 主键
     * @return 是否成功
     */
    ResponseMessage deleteById(String moduleId);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param perModule 实例对象
     * @return 对象列表
     */
    List<PerModule> queryAll(PerModule perModule);

    /**
     * 根据模块id 查询所有父模块id为模块id
     * @param modMId
     * @return
     */
    List<PerModule> selectParent(String modMId);

    /**
     *  通过数组主键删除数据
     * @param arr
     * @return
     */
    ResponseMessage deleteAll(String[] arr);

    /**
     * 根据用户查询所有模块(菜单 目录)
     * @param userId
     * @return
     */
    List<PerModule> findByUserIdModuleAll(Integer userId);

    /**
     * 根据用户查询所有模块 (菜单 目录 按钮)
     * @param userId
     * @return
     */
    List<PerModule> findByUserIdModuleAllButton(Integer userId);
}